1
Giới thiệu về Tác tử Giải quyết Vấn đề
PolyU COMP5511Bài giảng 2
00:00

Từ Phản xạ đến Lập kế hoạch

Trong quá trình phát triển thiết kế tác tử, chúng ta chuyển từ Tác tử Phản xạ, cái ánh xạ các cảm nhận trực tiếp đến hành động dựa trên các quy tắc đơn giản (ví dụ: “Nếu xe phía trước phanh, hãy bắt đầu phanh”), sang Tác tử Giải quyết Vấn đề. Tác tử phản xạ hoạt động dựa trên ngữ cảnh tức thời, trong khi tác tử giải quyết vấn đề là Dựa trên Mục tiêu. Chúng xem xét các hậu quả trong tương lai của hành động để tìm một chuỗi hành động thỏa mãn một mục tiêu cụ thể.

  • Tác tử Phản xạ: $Action = Function(Percept)$
  • Tác tử Lập kế hoạch: $Action\_Sequence = Search(State, Goal)$

Biểu diễn Trạng thái Nguyên tử

Ở cấp độ cơ bản này, các tác tử sử dụng một Biểu diễn Nguyên tử. Điều này có nghĩa là trạng thái của thế giới được coi như một hộp đen—một nút đơn lẻ không có cấu trúc nội bộ nào hiển thị cho thuật toán tìm kiếm. Tác tử chỉ suy luận về:

  • Các trạng thái ($S$): Ảnh chụp nhanh môi trường.
  • Các hành động ($A$): Chuyển đổi giữa các trạng thái.
  • Kiểm tra Mục tiêu: Một kiểm tra boolean nếu trạng thái $s \in S_{goal}$.

Vòng lặp Giải quyết Vấn đề

Một tác tử giải quyết vấn đề tuân theo một chu kỳ bốn bước riêng biệt để điều hướng môi trường:

  1. Xây dựng Mục tiêu: Quyết định mục tiêu nào cần theo đuổi dựa trên tình huống hiện tại.
  2. Xây dựng Vấn đề: Trừu tượng hóa thế giới thực thành một mô hình toán học (Trạng thái và Hành động).
  3. Tìm kiếm: Mô phỏng các chuỗi hành động để tìm đường đi tối ưu.
  4. Thực thi: Thực hiện các hành động tìm được trong giai đoạn tìm kiếm mà không cần xem xét thêm (giả định môi trường tĩnh).
Triển khai Python (agent_types.py)
1
class ReflexAgent:
2
defact( self, percept):
3
# Ánh xạ trực tiếp: Quy tắc -> Hành động
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__( self):
8
self.seq = [] # Chuỗi hành động được lưu trong bộ đệm
9
10
defact( self, percept):
11
# Nếu chúng ta đang trong quá trình thực thi, hãy tiếp tục
12
ifself.seq:
13
returnself.seq.pop( 0()
14
15
# Nếu không, Lập kế hoạch (Tìm kiếm)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Tìm kiếm trả về một danh sách các hành động
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop( 0()